//
//  FYStatusListViewModel.swift
//  Weibo
//
//  Created by 冯毅 on 16/8/12.
//  Copyright © 2016年 冯毅. All rights reserved.
//

import UIKit

//  获取微博数据的ViewModel, 对应的视图是首页的tableView
class FYStatusListViewModel: NSObject {
    
    //  微博数据源
    lazy var statusList: [FYStatusViewModel] = [FYStatusViewModel]()
    //  加载微博数据
    func loadData(isPullup: Bool, callBack: (isSuccess: Bool,message: String)->()) {
        
        var maxId: Int64 = 0
        
        var sinceId: Int64 = 0
        
        if isPullup {
            //  上拉加载获取数据源里面最后一条微博数据的id
            maxId = statusList.last?.status?.id ?? 0
            if maxId > 0 {
                maxId -= 1
            }
        } else {
            //  下拉刷新获取数据源里面的第一条微博的id
            sinceId = statusList.first?.status?.id ?? 0
        }
        //  默认显示的tiplabel文字
        var result = "没有加载到最新的微博数据"
        
        FYNetworkTools.sharedTools.requestStatuses(FYUserAccountViewModel.sharedUserAccount.accessToken!, maxId: maxId, sinceId: sinceId) { (response, error) -> () in
            if error != nil {
                print("网络请求异常,\(error)")
                callBack(isSuccess: false, message: result)
                return
            }
            
            //代码执行到此,表示网络请求成功
            guard let dic = response as? [String: AnyObject] else {
                print("字典格式不正确")
                callBack(isSuccess: false, message: result)
                return
            }
            //  字典格式正确
            guard let dicArray = dic["statuses"] as? [[String: AnyObject]] else {
                print("字典格式不正确")
                callBack(isSuccess: false, message: result)
                return
            }
            var tempArray = [FYStatusViewModel]()
            
            for value in dicArray {
                let status = FYStatus(dic: value)
                
                let statusViewModel = FYStatusViewModel(status: status)
                
                tempArray.append(statusViewModel)
            
            }
            
//            self.statusList = tempArray

            if isPullup {
                //  上拉加载追加服务端返回的数据
                self.statusList.appendContentsOf(tempArray)
            } else {
                
                //  下拉刷新服务端返回的插入到第一个元素
                self.statusList.insertContentsOf(tempArray, at: 0)
            }
            
            if tempArray.count > 0 {
                result = "加载了\(tempArray.count)条数据"
            }
            
            callBack(isSuccess: true, message: result)
            
        }
    }
}
